package Home_Work.src.day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 实现时间的计算: 要求用户输入身份证号，若格式有误，要求其重新输入。然后根据身份证号码输出20岁生日 所在周的周三的日期。 例如:
 * 出生日期:1992-07-15。 20岁生日:2012-07-15 当周的周三为:2012-07-18
 * 
 * @author Bonnie
 *
 */
public class Test05 {
	public static void main(String[] args) throws ParseException {
		String id;
		String regex = "[0-9]{17}[0-9X]{1}";
		while (true) {
			System.out.println("输入身份证号：");
			Scanner scanner = new Scanner(System.in);
			id = scanner.nextLine();
			if (id.matches(regex) != true) {
				System.out.println("格式有误，请重新输入！");
			} else {
				break;
			}
		}
		String birthday = id.substring(6, 14);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
		Date bDate = sdf.parse(birthday);
		Calendar cal = Calendar.getInstance();
		cal.setTime(bDate);
		cal.add(Calendar.YEAR, 20);
		cal.set(Calendar.DAY_OF_WEEK, 4);
		System.out.println("20岁生日当周周三的日期：" + sdf1.format(cal.getTime()));
	}
}
